In the case of a digital control system, in particular of a numerical control system for machine tools or robots, there are cyclically repeating time-critical computing processes. The processes comprise, for example, the continuous output, necessary for controlling the position and rotational speed, of desired values to the drives of the machine tool or of the robot. The processes also include the continuous acquisition of the position and speed transmitter values.
Other tasks of such a control system, such as the updating of the indicating unit, polling the keyboard of the input unit, reading in future partial programs, the preparation of NC data as a function of the partial programs, etc., are by contrast to be seen as non-time-critical computing processes. Computing processes may also be referred to as "tasks".
The real-time system of the control system must ensure that the time-critical computing processes are always processed immediately. To this end, as required a non-time-critical computing process which is currently being processed is interrupted. The measures necessary for this, for example processor interrupts, are known to those skilled in the art.
The real-time system must also ensure that the non-time-critical computing processes processed in the computing time that is still available between the processing of the time-critical computing processes. During the processing of these non-time-critical computing processes it has to be taken into account that all the non-time-critical computing processes are processed as far as possible simultaneously in accordance with the "time-sharing" method.
Each computing process comprises one or more program sequences which in turn comprise a sequence of individual program steps to be processed. Some of these program sequences are very load-dependent. Thus a computing process which loads an NC partial program into the memory of the real-time system needs significantly more computing time for a large complex partial program than for a small simple partial program.
This dependence on load means that the computing time needed for individual program sequences fluctuates severely and under certain circumstances becomes disproportionately large in comparison to other program sequences, The problem thus arises that an individual program sequence uses up the entire computing time still available between the processing of the time-critical computing processes, and therefore the other program sequences, for example the screen display, cannot for the time being be processed further. A behavior resulting from this of the control system could disquiet the user or lead to erroneous action.
A previous solution comprised subdividing such program sequences into a multiplicity of independent computing processes. However, such a solution had the disadvantage that additional computing time is used in the real-time system for the administration of these additional computing processes. Even in cases where, for load-dependent reasons, the program sequence is currently not disproportionately large. Furthermore, program sequences of this type cannot always be localized in advance. Often, such program sequences are specifically ascertained only when adapting the control systems to specific customer requirements. However, subsequent changes of the computing process structure to the customer requirements would then be extremely complicated. If in addition it is truly possible only at running time to detect whether a program sequence needs a disproportionately large amount of computing time, a dynamic change to the computing process structure would have to be undertaken. This would likewise require computing time to a high extent, and because of the increased complexity, interventions in the running process would be undesirable for reasons of safety.